export default {
  namespaced: true,

  state: {
    cartItems: uni.getStorageSync('cart') || [] ,  // 购物车的列表数据
  },

  getters: {
    // 选中商品的总价
    checkedAmount(state) {
      const result = state.cartItems.reduce((sum, item) => {
        if (item.goods_state) {
          return sum + item.goods_count * item.goods_price
        } else {
          return sum
        }
      }, 0)
      return result.toFixed(2)
    },
    // 选中商品数量
    checkedTotal(state) {
      const result = state.cartItems.reduce((sum, item) => {
        // 判断选中的状态为true, 进行累加
        if (item.goods_state) {
          return sum + item.goods_count
        } else {
          return sum 
        }
      }, 0)
      return result
    },
    // 商品总数量
    total(state) {
      const result = state.cartItems.reduce((sum, item) => sum + item.goods_count, 0)
      return result
    }
  },

  mutations: {
    // 修改小选框的状态
    updateAllState(state, allChecked) {
      // 单纯的遍历 forEach
      state.cartItems.forEach(v => v.goods_state = allChecked)
      uni.setStorageSync('cart', state.cartItems)
    },
    // 删除商品
    removeGoods(state, item) {
      // filter 过滤
      state.cartItems = state.cartItems.filter(v => v.goods_id !== item.goods_id)
      uni.setStorageSync('cart', state.cartItems)
    },
    // 修改数量
    updateCount(state, { product, num }) {
      // console.log(product, num);
      // 1. 查找商品
      const existedItem = state.cartItems.find(v => v.goods_id === product.goods_id)
      // 2. 修改商品数量
      if (existedItem) {
        existedItem.goods_count = num
        // 3. 持久化存储
        uni.setStorageSync('cart', state.cartItems)
      }
    },
    // 更新状态
    updateState(state, item) {
      // console.log(item);
      // 1. 先找到当前的商品 --- find
      const existedItem = state.cartItems.find(v=> v.goods_id === item.goods_id)
      // 2. 修改当前商品的选中状态 goods_state 取反
      if (existedItem) {
        existedItem.goods_state = !existedItem.goods_state
        // 3. 持久化存储
        uni.setStorageSync('cart', state.cartItems)
      }

    },
    // 加入购物车
    addToCart(state, item) {
      // state.cartItems.push(item) 
      // 判断商品是否存在于列表中
      // 如果存在, 直接修改商品的数量 + 1 
      // 如果不存在, 添加到列表中
      const existedItem = state.cartItems.find(v => v.goods_id === item.goods_id)
      // console.log('----cart模块', existedItem);
      if (existedItem) {
        // 存在  -> 修改当前商品的数量
        existedItem.goods_count ++
      } else {
        // 不存在 -> 添加到列表中
        state.cartItems.push(item)
      }
      // 持久化存储
      uni.setStorageSync('cart', state.cartItems)
    }
  },

  actions: {},
}